Apache ActiveMQ এবং Spring Boot এর ইন্টিগ্রেশন খুবই সহজ এবং শক্তিশালী মেসেজিং সিস্টেম তৈরি করতে সহায়ক। Spring Boot অ্যাপ্লিকেশনগুলিতে Apache ActiveMQ এর সাহায্যে মেসেজ পাঠানো এবং গ্রহণ করার প্রক্রিয়া অত্যন্ত সহজ। এখানে আমরা দেখব কিভাবে Spring Boot এর সাথে Apache ActiveMQ ইন্টিগ্রেট করা যায়।
প্রয়োজনীয় লাইব্রেরি
Spring Boot অ্যাপ্লিকেশনে Apache ActiveMQ ইন্টিগ্রেট করার জন্য আপনাকে কয়েকটি লাইব্রেরি প্রয়োজন হবে। Maven বা Gradle ব্যবহার করে এই ডিপেনডেন্সিগুলি আপনার প্রকল্পে যুক্ত করুন।
Maven (pom.xml) এ ডিপেনডেন্সি:
<dependencies>
<!-- Spring Boot Starter for ActiveMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-artemis</artifactId> <!-- Artemis is built on top of ActiveMQ -->
</dependency>
<!-- Spring Boot Starter for JMS (Java Message Service) -->
<dependency>
<groupId>org.springframework.jms</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
</dependencies>
Gradle (build.gradle) এ ডিপেনডেন্সি:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-artemis' // Artemis (ActiveMQ)
implementation 'org.springframework.jms:spring-jms'
}
ActiveMQ Configuration in Spring Boot
Spring Boot অ্যাপ্লিকেশনকে Apache ActiveMQ এর সাথে সংযুক্ত করার জন্য কিছু কনফিগারেশন সেট করতে হবে। সাধারণত, আমরা application.properties বা application.yml ফাইলে এই কনফিগারেশনগুলি নির্ধারণ করি।
application.properties:
# ActiveMQ Broker Configuration
spring.activemq.broker-url=tcp://localhost:61616 # ActiveMQ Broker URL
spring.activemq.user=admin # ActiveMQ Username
spring.activemq.password=admin # ActiveMQ Password
spring.activemq.in-memory=false # Use persistence storage
spring.jms.pub-sub-domain=false # Set to true for Topic-based messaging (Pub/Sub)
application.yml:
spring:
activemq:
broker-url: tcp://localhost:61616
user: admin
password: admin
in-memory: false
pub-sub-domain: false # For Queue-based messaging
Spring Boot Producer (Message Sender)
Spring Boot অ্যাপ্লিকেশন থেকে ActiveMQ তে মেসেজ পাঠানোর জন্য একটি MessageProducer বা JMS Producer তৈরি করতে হবে। Spring JmsTemplate ব্যবহার করে খুব সহজে মেসেজ প্রেরণ করা যায়।
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
import javax.jms.Queue;
@Service
public class ActiveMQProducer {
private final JmsTemplate jmsTemplate;
private final Queue queue;
public ActiveMQProducer(JmsTemplate jmsTemplate, Queue queue) {
this.jmsTemplate = jmsTemplate;
this.queue = queue;
}
public void sendMessage(String message) {
// Send message to ActiveMQ Queue
jmsTemplate.convertAndSend(queue, message);
}
}
Spring Boot Consumer (Message Receiver)
ActiveMQ থেকে মেসেজ গ্রহণ করতে @JmsListener অ্যানোটেশন ব্যবহার করা হয়। এটি Spring JMS (Java Message Service) ইন্টিগ্রেশন থেকে আসে এবং মেসেজ প্রাপ্তির জন্য খুব সহজ এবং কার্যকরী একটি উপায়।
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class ActiveMQConsumer {
@JmsListener(destination = "myQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
এখানে, @JmsListener অ্যানোটেশনটি myQueue কিউ থেকে মেসেজ গ্রহণ করতে ব্যবহৃত হয়েছে। যখনই এই কিউতে নতুন মেসেজ আসবে, receiveMessage() মেথডটি স্বয়ংক্রিয়ভাবে কল হবে।
Queue Configuration (Queue তৈরি করা)
Spring Boot অ্যাপ্লিকেশনকে একটি কিউ কনফিগার করতে হবে, যাতে মেসেজগুলি সঠিকভাবে প্রেরিত এবং গ্রহণ করা যায়। এটি @Bean দিয়ে করা হয়।
import org.apache.activemq.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.jms.Queue;
@Configuration
public class ActiveMQConfig {
@Bean
public Queue queue() {
return new ActiveMQQueue("myQueue");
}
}
এখানে, myQueue নামক একটি কিউ তৈরি করা হয়েছে, যা মেসেজ পাঠানোর এবং গ্রহণ করার জন্য ব্যবহৃত হবে।
Controller to Trigger Producer
Spring Boot অ্যাপ্লিকেশনে একটি Controller তৈরি করা যেতে পারে, যা ব্যবহারকারীর ইনপুট বা কোনো HTTP রিকোয়েস্টের মাধ্যমে মেসেজ প্রেরণ করবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ActiveMQController {
private final ActiveMQProducer activeMQProducer;
@Autowired
public ActiveMQController(ActiveMQProducer activeMQProducer) {
this.activeMQProducer = activeMQProducer;
}
@GetMapping("/send")
public String sendMessage() {
activeMQProducer.sendMessage("Hello, ActiveMQ!");
return "Message sent successfully!";
}
}
এখানে, /send URL এ GET রিকোয়েস্ট করলে, sendMessage মেথডটি কল হবে এবং ActiveMQProducer মেসেজ পাঠাবে।
সারাংশ
Apache ActiveMQ এর সঙ্গে Spring Boot ইন্টিগ্রেশন খুবই সহজ এবং দ্রুত সম্পন্ন করা যায়। JmsTemplate এবং @JmsListener ব্যবহার করে, আপনি Spring Boot অ্যাপ্লিকেশন থেকে মেসেজ প্রেরণ এবং গ্রহণ করতে পারবেন। এটি Queue-based messaging বা Topic-based messaging দুই ধরনের মেসেজ ডেলিভারি মডেলও সমর্থন করে। একে Spring Boot অ্যাপ্লিকেশনগুলোতে কার্যকরভাবে ইন্টিগ্রেট করার মাধ্যমে, আপনি একটি শক্তিশালী এবং স্কেলেবল মেসেজিং সিস্টেম তৈরি করতে পারেন।
Spring Boot এবং Apache ActiveMQ এর ইন্টিগ্রেশন ব্যবহার করে আপনি সহজেই মেসেজিং সিস্টেম তৈরি করতে পারেন, যেখানে Spring Boot অ্যাপ্লিকেশন থেকে ActiveMQ ব্রোকারের মাধ্যমে মেসেজ পাঠানো এবং গ্রহণ করা যাবে। অ্যাপাচি অ্যাকটিভএমকিউ হলো একটি ওপেন সোর্স মেসেজ ব্রোকার যা JMS (Java Message Service) প্রটোকল সাপোর্ট করে এবং Spring Boot এর সাথে সহজে ইন্টিগ্রেট করা যায়।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Spring Boot অ্যাপ্লিকেশনে ActiveMQ সেটআপ করা যায় এবং মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করা যায়।
১. Spring Boot প্রজেক্ট তৈরি করা
প্রথমে, আপনার Spring Boot অ্যাপ্লিকেশন তৈরির জন্য প্রয়োজনীয় ডিপেনডেন্সি এবং সেটআপ করতে হবে। আপনি Spring Initializr ব্যবহার করে একটি নতুন Spring Boot প্রজেক্ট তৈরি করতে পারেন। প্রজেক্টের জন্য ডিপেনডেন্সি নির্বাচন করুন:
- Spring Web
- Spring JMS
- ActiveMQ Artemis (JMS)
২. pom.xml এ ডিপেনডেন্সি যোগ করা
Spring Boot অ্যাপ্লিকেশনটির pom.xml ফাইলে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে। এটি আপনাকে ActiveMQ এবং Spring JMS ব্যবহার করতে সাহায্য করবে।
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter JMS -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- Spring Boot Starter for JMS (Apache ActiveMQ) -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
৩. application.properties কনফিগারেশন
আপনার Spring Boot অ্যাপ্লিকেশনকে ActiveMQ ব্রোকারের সাথে সংযোগ স্থাপন করার জন্য application.properties ফাইলে কনফিগারেশন যোগ করতে হবে।
# ActiveMQ কনফিগারেশন
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=true
এখানে:
- broker-url: ActiveMQ ব্রোকারের URL।
- user এবং password: ActiveMQ এর ডিফল্ট ইউজারনেম এবং পাসওয়ার্ড।
- in-memory: এটি ইন-মেমরি স্টোরেজ নিশ্চিত করে, অর্থাৎ ডাটাবেস ছাড়া ActiveMQ কাজ করবে।
৪. Spring JMS Configuration
Spring Boot অ্যাপ্লিকেশনে ActiveMQ ইন্টিগ্রেট করার জন্য, আপনি একটি কনফিগারেশন ক্লাস তৈরি করতে পারেন যা ActiveMQ এর সাথে Spring JMS-এর সংযোগ স্থাপন করবে।
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.connection.CachingConnectionFactory;
import org.springframework.jms.core.JmsTemplate;
@Configuration
public class ActiveMQConfig {
@Bean
public ActiveMQConnectionFactory connectionFactory() {
return new ActiveMQConnectionFactory("tcp://localhost:61616");
}
@Bean
public CachingConnectionFactory cachingConnectionFactory(ActiveMQConnectionFactory connectionFactory) {
return new CachingConnectionFactory(connectionFactory);
}
@Bean
public JmsTemplate jmsTemplate(CachingConnectionFactory cachingConnectionFactory) {
return new JmsTemplate(cachingConnectionFactory);
}
}
এখানে:
- ActiveMQConnectionFactory: এটি ActiveMQ ব্রোকারের সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত হয়।
- CachingConnectionFactory: এটি কানেকশন ক্যাশিংয়ের জন্য ব্যবহৃত হয়, যাতে কানেকশন পুনরায় ব্যবহার করা যায়।
- JmsTemplate: এটি মেসেজ প্রেরণ এবং গ্রহণের জন্য ব্যবহৃত হয়।
৫. Message Producer (প্রোডিউসার) তৈরি করা
ActiveMQ এর মাধ্যমে মেসেজ পাঠানোর জন্য একটি প্রোডিউসার ক্লাস তৈরি করতে হবে। এটি JmsTemplate ব্যবহার করে মেসেজ ActiveMQ কিউতে পাঠাবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;
@Component
public class MessageProducer {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(String message) {
jmsTemplate.convertAndSend("testQueue", message);
}
}
এখানে:
- JmsTemplate.convertAndSend(): এটি মেসেজ ActiveMQ কিউতে পাঠানোর জন্য ব্যবহৃত হয়।
- "testQueue": কিউয়ের নাম যা ActiveMQ এ থাকবে।
৬. Message Consumer (কনজিউমার) তৈরি করা
এখন, আপনাকে একটি কনজিউমার তৈরি করতে হবে, যা ActiveMQ কিউ থেকে মেসেজ গ্রহণ করবে।
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class MessageConsumer {
@JmsListener(destination = "testQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
এখানে:
- @JmsListener: এই অ্যানোটেশনটি ব্যবহার করে, আপনি কনজিউমার মেথডে মেসেজ গ্রহণ করতে পারেন। এটি স্বয়ংক্রিয়ভাবে কিউ থেকে মেসেজ গ্রহণ করে এবং প্রক্রিয়া করে।
৭. Main Application Class
Spring Boot অ্যাপ্লিকেশন রান করার জন্য একটি মূল ক্লাস তৈরি করুন।
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Autowired;
@SpringBootApplication
public class ActiveMQApplication implements CommandLineRunner {
@Autowired
private MessageProducer messageProducer;
public static void main(String[] args) {
SpringApplication.run(ActiveMQApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
messageProducer.sendMessage("Hello, ActiveMQ from Spring Boot!");
}
}
এখানে:
- CommandLineRunner: Spring Boot অ্যাপ্লিকেশন স্টার্ট হওয়ার পর মেসেজ প্রোডিউসারকে চালু করবে এবং একটি মেসেজ ActiveMQ কিউতে পাঠাবে।
৮. Spring Boot অ্যাপ্লিকেশন চালানো
এখন, আপনি Spring Boot অ্যাপ্লিকেশন চালাতে পারবেন। যদি আপনার অ্যাকটিভএমকিউ ব্রোকার রান না থাকে, তাহলে প্রথমে সেটি চালু করুন (যেমন: activemq start কমান্ড দিয়ে)। এরপর Spring Boot অ্যাপ্লিকেশনটি চালু করুন:
mvn spring-boot:run
এটি মেসেজ প্রোডিউসারকে testQueue কিউতে একটি মেসেজ পাঠাতে সক্ষম হবে। মেসেজ কনজিউমার তা গ্রহণ করবে এবং কনসোল এ দেখাবে।
সারাংশ
Spring Boot এবং Apache ActiveMQ এর ইন্টিগ্রেশন একটি শক্তিশালী এবং স্কেলেবল মেসেজিং সিস্টেম তৈরি করতে সাহায্য করে। Spring Boot অ্যাপ্লিকেশন থেকে ActiveMQ ব্রোকারের মাধ্যমে মেসেজ প্রেরণ এবং গ্রহণ করা সহজে করা যায়। এখানে ব্যবহৃত JmsTemplate এবং @JmsListener অ্যাপাচি অ্যাকটিভএমকিউ-এর সাথে সংযুক্ত হয়ে কার্যকরীভাবে মেসেজ প্রোসেসিং করতে সক্ষম।
অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) এবং স্প্রিং ফ্রেমওয়ার্ক (Spring Framework) একে অপরের সাথে মেসেজিং সিস্টেমের জন্য দুর্দান্তভাবে ইন্টিগ্রেট হতে পারে। স্প্রিং JMS (Java Message Service) API ব্যবহার করে আপনি অ্যাপাচি অ্যাকটিভএমকিউ-এ মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করতে পারেন। অ্যাকটিভএমকিউ ব্রোকার কনফিগারেশন সেটআপের মাধ্যমে আপনি আপনার মেসেজিং সিস্টেমের কার্যকারিতা এবং স্কেলেবিলিটি নির্ধারণ করতে পারেন।
এখানে, Spring JMS এবং ActiveMQ Broker Configuration এর সংমিশ্রণে অ্যাপাচি অ্যাকটিভএমকিউ-তে মেসেজ প্রোডিউসার ও কনজিউমার তৈরি এবং ব্রোকার কনফিগারেশন কিভাবে সেটআপ করা যায় তা ব্যাখ্যা করা হবে।
Spring JMS এবং ActiveMQ Broker Configuration
1. Spring JMS Configuration
স্প্রিং জেএমএস (JMS) কনফিগারেশন ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন থেকে অ্যাকটিভএমকিউ-এর সাথে যোগাযোগ স্থাপন করা যায়। আপনি স্প্রিং কনটেইনারের মধ্যে JmsTemplate এবং ConnectionFactory ব্যবহৃত কনফিগারেশন তৈরি করতে পারেন, যা মেসেজ প্রোডিউসার এবং কনজিউমারকে কাজ করতে সাহায্য করবে।
Spring JMS কনফিগারেশন উদাহরণ:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Connection Factory for ActiveMQ -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<!-- JMS Template for sending and receiving messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestinationName" value="queue/testQueue"/>
</bean>
<!-- Message Listener for receiving messages -->
<bean id="messageListener" class="com.example.MessageListener"/>
<bean id="messageListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destinationName" value="queue/testQueue"/>
<property name="messageListener" ref="messageListener"/>
</bean>
</beans>
এখানে:
ActiveMQConnectionFactory: অ্যাকটিভএমকিউ ব্রোকারের জন্য কানেকশন ফ্যাক্টরি কনফিগার করা হয়েছে।JmsTemplate: এটি মেসেজ প্রেরণ এবং গ্রহণের জন্য ব্যবহৃত হয়।DefaultMessageListenerContainer: এটি স্প্রিং-এ অ্যাসিঙ্ক্রোনাস মেসেজ লিসেনিং পরিচালনা করতে ব্যবহৃত হয়।
2. ActiveMQ Broker Configuration
অ্যাকটিভএমকিউ ব্রোকার কনফিগারেশন সেটআপের মাধ্যমে আপনি transport connectors, message stores, এবং persistence adapters কনফিগার করতে পারেন। ব্রোকার কনফিগারেশন সাধারণত activemq.xml ফাইলে করা হয়।
ActiveMQ Broker কনফিগারেশন উদাহরণ:
<broker xmlns="http://activemq.apache.org/schema/core"
brokerName="localhost"
dataDirectory="${activemq.data}">
<!-- Transport Connectors for ActiveMQ -->
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"/>
</transportConnectors>
<!-- Persistence Adapter Configuration -->
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
<!-- Destinations for Queues and Topics -->
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" memoryLimit="104857600"/>
<policyEntry topic=">" memoryLimit="104857600"/>
</policyEntries>
</policyMap>
</destinationPolicy>
</broker>
এখানে:
transportConnectors: এটি ব্রোকারের বিভিন্ন কনেকশন পোর্ট কনফিগার করে, যেমন TCP পোর্ট (61616) ব্যবহার করা হয়েছে।persistenceAdapter: এটি মেসেজ সংরক্ষণের জন্য কনফিগার করা হয়। এখানে KahaDB ব্যবহার করা হয়েছে, যা ডেটা সংরক্ষণ এবং মেসেজ পাসিংয়ের জন্য ব্যবহৃত হয়।destinationPolicy: এখানে কিউ এবং টপিকের জন্য মেমরি সীমা নির্ধারণ করা হয়েছে।
3. Message Producer and Consumer in Spring JMS
স্প্রিং জেএমএস ব্যবহার করে অ্যাপ্লিকেশন থেকে মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করা হয়।
Message Producer Example:
import org.springframework.jms.core.JmsTemplate;
import javax.jms.TextMessage;
public class MessageProducer {
private JmsTemplate jmsTemplate;
public void sendMessage(String message) {
jmsTemplate.convertAndSend("queue/testQueue", message);
}
}
এখানে:
JmsTemplate.convertAndSend(): মেসেজটি কিউ তে পাঠানোর জন্য ব্যবহৃত হয়।
Message Consumer Example:
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message: " + textMessage.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে:
MessageListener: এটি মেসেজ গ্রহণ করার জন্য ব্যবহৃত হয়। মেসেজটি গ্রহণের পর তা প্রক্রিয়া করা হয়।
সারাংশ
- Spring JMS: স্প্রিং ফ্রেমওয়ার্কের মাধ্যমে অ্যাকটিভএমকিউ-এর সাথে সহজে যোগাযোগ স্থাপন করা যায়, যেখানে
JmsTemplateএবংMessageListenerব্যবহার করে মেসেজ প্রেরণ এবং গ্রহণ করা হয়। - ActiveMQ Broker Configuration: অ্যাকটিভএমকিউ ব্রোকার কনফিগারেশন ফাইলে
transportConnectors,persistenceAdapter, এবংdestinationPolicyকনফিগার করা হয়। এটি মেসেজ ট্রান্সপোর্ট, ডেটা স্টোরেজ, এবং কিউ/টপিক পরিচালনা করে। - Producer and Consumer: স্প্রিং জেএমএস ব্যবহার করে মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করা যায়। প্রোডিউসার মেসেজ পাঠায় এবং কনজিউমার মেসেজ গ্রহণ করে।
এই কনফিগারেশন এবং প্রোগ্রামিং মডেল অ্যাকটিভএমকিউ এবং স্প্রিং ফ্রেমওয়ার্কের মাধ্যমে শক্তিশালী, স্কেলযোগ্য এবং রিলায়েবল মেসেজিং সিস্টেম তৈরি করতে সহায়তা করে।
অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) এবং Spring Boot এর মাধ্যমে মেসেজ প্রেরণ (Sender) এবং গ্রহণ (Listener) একটি জনপ্রিয় প্যাটার্ন যা অ্যাসিঙ্ক্রোনাস মেসেজিং সিস্টেম তৈরি করতে ব্যবহৃত হয়। Spring Boot এবং অ্যাপাচি অ্যাকটিভএমকিউ-এর সমন্বয়ে আপনি সহজেই প্রোডিউসার (Sender) এবং কনজিউমার (Listener) তৈরি করতে পারেন।
এখানে আমরা দেখব কিভাবে Spring Boot এর সাহায্যে Message Sender এবং Message Listener তৈরি করা যায় অ্যাপাচি অ্যাকটিভএমকিউ ব্যবহার করে।
প্রয়োজনীয় ডিপেনডেন্সি
প্রথমে, pom.xml ফাইলে অ্যাপাচি অ্যাকটিভএমকিউ এবং স্প্রিং অ্যামকিউ (Spring ActiveMQ) ডিপেনডেন্সি যুক্ত করতে হবে:
<dependencies>
<!-- Spring Boot Starter Web for creating REST API -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for working with message brokers like ActiveMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for messaging -->
<dependency>
<groupId>org.springframework.jms</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<!-- Apache ActiveMQ dependency -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
এই ডিপেনডেন্সিগুলি আপনার প্রজেক্টে অ্যাপাচি অ্যাকটিভএমকিউ এবং স্প্রিং বুটের মধ্যে ইন্টিগ্রেশন সরবরাহ করবে।
Spring Boot এর মাধ্যমে Message Sender (Producer) তৈরি করা
এখন আমরা একটি Message Sender তৈরি করব যা অ্যাপাচি অ্যাকটিভএমকিউ ব্রোকারে মেসেজ পাঠাবে।
ActiveMQ Configuration:
অ্যাপাচি অ্যাকটিভএমকিউ কনফিগারেশন Spring Boot অ্যাপ্লিকেশনে করার জন্য,
application.propertiesফাইলে কনফিগারেশন যুক্ত করতে হবে।spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.in-memory=false spring.activemq.packages.trust-all=trueএখানে:
- broker-url: অ্যাকটিভএমকিউ ব্রোকারের URL (ডিফল্ট পোর্ট: 61616)।
- user/password: অ্যাকটিভএমকিউ ব্রোকারের ইউজারনেম এবং পাসওয়ার্ড।
- in-memory=false: ডিস্কে মেসেজ স্টোরেজ সক্রিয় করা।
Message Sender (Producer) কনফিগারেশন:
মেসেজ প্রেরণের জন্য আমরা একটি
JmsTemplateব্যবহার করব।package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Service; @Service public class MessageSender { @Autowired private JmsTemplate jmsTemplate; private String destination = "testQueue"; // Queue Name // Method to send message to ActiveMQ public void sendMessage(String message) { jmsTemplate.convertAndSend(destination, message); System.out.println("Sent message: " + message); } }এখানে:
- JmsTemplate: Spring Boot এর মাধ্যমে অ্যাকটিভএমকিউে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
- destination: মেসেজ প্রেরণের জন্য কিউয়ের নাম।
REST Controller for Sending Messages:
মেসেজ পাঠানোর জন্য একটি REST API তৈরি করতে পারেন:
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class MessageController { @Autowired private MessageSender messageSender; // Endpoint to send message @GetMapping("/send") public String sendMessage(@RequestParam String message) { messageSender.sendMessage(message); return "Message sent: " + message; } }এই কোডের মাধ্যমে, আপনি
http://localhost:8080/send?message=HelloActiveMQURL এ GET রিকোয়েস্ট পাঠিয়ে মেসেজ পাঠাতে পারবেন।
Spring Boot এর মাধ্যমে Message Listener (Consumer) তৈরি করা
এখন আমরা একটি Message Listener তৈরি করব যা কিউ থেকে মেসেজ গ্রহণ করবে।
Message Listener কনফিগারেশন:
Spring Boot এর মাধ্যমে @JmsListener ব্যবহার করে আপনি মেসেজ গ্রহণ করতে পারেন। প্রথমে, @EnableJms অ্যানোটেশনটি ব্যবহার করে JmsListener সক্রিয় করতে হবে।
package com.example.demo; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Service; @Service public class MessageListener { // Listening to the 'testQueue' for incoming messages @JmsListener(destination = "testQueue") public void receiveMessage(String message) { System.out.println("Received message: " + message); } }এখানে:
- @JmsListener(destination = "testQueue"): এটি
testQueueথেকে মেসেজ গ্রহণ করার জন্য কনজিউমার তৈরি করে। যখনই কিউতে একটি মেসেজ আসে, এই মেথডটি তা গ্রহণ করবে।
- @JmsListener(destination = "testQueue"): এটি
JmsListenerContainerFactory কনফিগারেশন:
স্প্রিং বুটের মাধ্যমে JMS কনজিউমার এবং কনফিগারেশন পরিচালনা করার জন্য JmsListenerContainerFactory কনফিগার করা হয়:
package com.example.demo; import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.annotation.EnableJms; import org.springframework.jms.connection.JmsConnectionFactoryFactory; import org.springframework.jms.listener.DefaultMessageListenerContainer; import org.springframework.jms.listener.MessageListenerContainer; import org.springframework.jms.listener.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.listener.config.JmsListenerContainerFactory; import org.springframework.jms.support.destination.DestinationResolver; import org.springframework.jms.support.converter.MessageConverter; @Configuration @EnableJms public class JmsConfig { @Bean public JmsListenerContainerFactory<?> myFactory( ActiveMQConnectionFactory connectionFactory, MessageConverter messageConverter, DestinationResolver destinationResolver) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setMessageConverter(messageConverter); factory.setDestinationResolver(destinationResolver); return factory; } }
সারাংশ
অ্যাপাচি অ্যাকটিভএমকিউ এবং Spring Boot ব্যবহার করে Message Sender (Producer) এবং Message Listener (Consumer) তৈরি করা একটি সাধারণ এবং কার্যকরী উপায় মেসেজিং সিস্টেম তৈরির জন্য। Spring Boot এর মাধ্যমে:
- Message Sender:
JmsTemplateব্যবহার করে মেসেজ পাঠানো হয়। - Message Listener:
@JmsListenerব্যবহার করে মেসেজ গ্রহণ করা হয়।
এইভাবে, আপনি স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করে অ্যাপাচি অ্যাকটিভএমকিউ মেসেজ ব্রোকারের মাধ্যমে মেসেজ প্রেরণ এবং গ্রহণ সহজেই পরিচালনা করতে পারেন।
Read more